# 初始化系统参数的管理命令
from django.core.management.base import BaseCommand
from assets.models_system import SystemParameter


class Command(BaseCommand):
    help = '初始化系统参数配置'

    def handle(self, *args, **options):
        """初始化系统参数"""
        
        # 系统基础配置
        system_params = [
            {
                'key': 'system.name',
                'name': '系统名称',
                'value': '固定资产管理系统',
                'param_type': 'string',
                'group': '系统配置',
                'description': '系统显示名称',
                'sort_order': 1,
            },
            {
                'key': 'system.version',
                'name': '系统版本',
                'value': '1.0.0',
                'param_type': 'string',
                'group': '系统配置',
                'description': '当前系统版本号',
                'sort_order': 2,
                'is_readonly': True,
            },
            {
                'key': 'system.maintenance_mode',
                'name': '维护模式',
                'value': 'false',
                'param_type': 'boolean',
                'group': '系统配置',
                'description': '是否开启系统维护模式',
                'sort_order': 3,
            },
            {
                'key': 'system.max_upload_size',
                'name': '最大上传文件大小',
                'value': '10',
                'param_type': 'integer',
                'group': '系统配置',
                'description': '文件上传大小限制(MB)',
                'sort_order': 4,
            },
        ]
        
        # 资产管理配置
        asset_params = [
            {
                'key': 'asset.auto_generate_number',
                'name': '自动生成资产编号',
                'value': 'true',
                'param_type': 'boolean',
                'group': '资产管理',
                'description': '是否自动生成资产编号',
                'sort_order': 1,
            },
            {
                'key': 'asset.number_prefix',
                'name': '资产编号前缀',
                'value': 'AS',
                'param_type': 'string',
                'group': '资产管理',
                'description': '自动生成资产编号的前缀',
                'sort_order': 2,
            },
            {
                'key': 'asset.default_depreciation_rate',
                'name': '默认折旧率',
                'value': '10.0',
                'param_type': 'float',
                'group': '资产管理',
                'description': '新建资产的默认折旧率(%)',
                'sort_order': 3,
            },
            {
                'key': 'asset.auto_generate_qr',
                'name': '自动生成二维码',
                'value': 'true',
                'param_type': 'boolean',
                'group': '资产管理',
                'description': '创建资产时自动生成二维码',
                'sort_order': 4,
            },
        ]
        
        # 库存管理配置
        inventory_params = [
            {
                'key': 'inventory.low_stock_threshold',
                'name': '低库存阈值',
                'value': '10',
                'param_type': 'integer',
                'group': '库存管理',
                'description': '库存预警的低库存阈值',
                'sort_order': 1,
            },
            {
                'key': 'inventory.critical_stock_threshold',
                'name': '严重缺货阈值',
                'value': '5',
                'param_type': 'integer',
                'group': '库存管理',
                'description': '严重缺货预警阈值',
                'sort_order': 2,
            },
            {
                'key': 'inventory.auto_reorder',
                'name': '自动补货提醒',
                'value': 'true',
                'param_type': 'boolean',
                'group': '库存管理',
                'description': '是否开启自动补货提醒',
                'sort_order': 3,
            },
        ]
        
        # 通知配置
        notification_params = [
            {
                'key': 'notification.email_enabled',
                'name': '邮件通知',
                'value': 'false',
                'param_type': 'boolean',
                'group': '通知配置',
                'description': '是否开启邮件通知',
                'sort_order': 1,
            },
            {
                'key': 'notification.sms_enabled',
                'name': '短信通知',
                'value': 'false',
                'param_type': 'boolean',
                'group': '通知配置',
                'description': '是否开启短信通知',
                'sort_order': 2,
            },
            {
                'key': 'notification.retention_days',
                'name': '通知保留天数',
                'value': '30',
                'param_type': 'integer',
                'group': '通知配置',
                'description': '系统通知保留天数',
                'sort_order': 3,
            },
        ]
        
        # 备份配置
        backup_params = [
            {
                'key': 'backup.auto_backup',
                'name': '自动备份',
                'value': 'true',
                'param_type': 'boolean',
                'group': '备份配置',
                'description': '是否开启自动备份',
                'sort_order': 1,
            },
            {
                'key': 'backup.backup_interval',
                'name': '备份间隔',
                'value': '24',
                'param_type': 'integer',
                'group': '备份配置',
                'description': '自动备份间隔(小时)',
                'sort_order': 2,
            },
            {
                'key': 'backup.retention_count',
                'name': '备份保留数量',
                'value': '7',
                'param_type': 'integer',
                'group': '备份配置',
                'description': '保留的备份文件数量',
                'sort_order': 3,
            },
        ]
        
        # AI配置
        ai_params = [
            {
                'key': 'ai.recommendation_enabled',
                'name': '智能推荐',
                'value': 'true',
                'param_type': 'boolean',
                'group': 'AI配置',
                'description': '是否开启智能推荐功能',
                'sort_order': 1,
            },
            {
                'key': 'ai.anomaly_detection_enabled',
                'name': '异常检测',
                'value': 'true',
                'param_type': 'boolean',
                'group': 'AI配置',
                'description': '是否开启异常检测功能',
                'sort_order': 2,
            },
            {
                'key': 'ai.confidence_threshold',
                'name': '置信度阈值',
                'value': '0.7',
                'param_type': 'float',
                'group': 'AI配置',
                'description': 'AI推荐的最低置信度阈值',
                'sort_order': 3,
            },
        ]
        
        # 合并所有参数
        all_params = (
            system_params + asset_params + inventory_params + 
            notification_params + backup_params + ai_params
        )
        
        created_count = 0
        updated_count = 0
        
        for param_data in all_params:
            param, created = SystemParameter.objects.get_or_create(
                key=param_data['key'],
                defaults=param_data
            )
            
            if created:
                created_count += 1
                self.stdout.write(
                    self.style.SUCCESS(f'创建参数: {param.name} ({param.key})')
                )
            else:
                # 更新现有参数的描述等信息（但不更新值）
                param.name = param_data['name']
                param.description = param_data['description']
                param.group = param_data['group']
                param.sort_order = param_data['sort_order']
                param.param_type = param_data['param_type']
                param.is_readonly = param_data.get('is_readonly', False)
                param.save()
                updated_count += 1
                self.stdout.write(
                    self.style.WARNING(f'更新参数: {param.name} ({param.key})')
                )
        
        self.stdout.write(
            self.style.SUCCESS(
                f'\n系统参数初始化完成！\n'
                f'创建: {created_count} 个参数\n'
                f'更新: {updated_count} 个参数\n'
                f'总计: {len(all_params)} 个参数'
            )
        )